<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
//    2.1. 快捷查询
        $row = Db::name('user')
//            ->where('id', 5)
//            ->where('id', 'lt', 5)
//            ->where('id', 'in', [1,3,5,6])
            ->where('name', 'like', '%王%')
            ->select();

        $row = Db::name('user')
            ->where('age', '<', 18)
            ->where('name', 'like', '%王%')
            ->select();

        $row = Db::name('user')
            ->where('age', '<', 18)
            ->whereOr('sex', '0')
            ->select();
//    2.2. 批量查询
        $row = Db::name('user')
            ->where([
                'id' => ['between', '10,20'],
                'sex' => ['eq', 0]
            ])
            ->select();

        $row = Db::name('user')
            ->where('id', ['between', '1,5'], ['in', '6,66,666'], 'or')
            ->select();

//    2.3. 区间查询
        $row = Db::name('user')
            ->where('id', ['>', 2], ['<', 15])
            ->select();


//    2.4. 多表查询
//        1). 手动多表
        $row = Db::field(['u.name'=>'un', 'l.name'=>'ln'])
            ->table(['hc_user'=> 'u', 'hc_lover'=>'l'])
            ->where('u.id = l.user_id')
            ->select();

//        2). JOIN
        $row = Db::table('hc_user')->alias('u')
            ->field(['u.name'=>'un', 'l.name'=>'ln'])
            ->join('hc_lover l', 'u.id = l.user_id')
            ->order('un')
            ->select();

//        3). 视图
        $row = Db::view('hc_user u', ['name'=>'un'])
            ->view('hc_lover l', ['name'=>'ln'], 'u.id = l.user_id')
            ->select();


//    2.5. 聚合查询
        $row = Db::name('user')->count('id');
        $row = Db::name('user')->avg('age');


        $row = Db::name('user')
            ->field(['province', 'count(id) cons'])
            ->group('province')
            ->select();


//    2.6. 子查询
//        1.fetchSql 方式
//        2.buildSql 方式
        // 1 构建子查询SQL
        $query = Db::table('hc_user')
            ->field(['id','name','age','sex'])
            ->where('sex',1)
            ->buildSql();
//        dump($query);
        // 2 组装完整SQL
        $row = Db::table($query . ' u')
            ->where('u.age', '<', 18)
            ->order('id', 'desc')
            ->select();

        dump($row);
    }
}
